home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (DO)
/
Nibble Volume 11, No. 01 (1990-01)(MindCraft Publishing)(Side B).zip
/
Nibble Volume 11, No. 01 (1990-01)(MindCraft Publishing)(Side B).do
/
RAINBOW.bas
< prev
next >
Wrap
BASIC Source File
|
1996-12-24
|
4KB
|
114 lines
10 REM *******************************
20 REM * RAINBOW *
30 REM * BY WHITNEY HARRIS *
40 REM * COPYRIGHT(C) 1990 *
50 REM * MINDCRAFT PUBL. CORP. *
60 REM * CONCORD, MA 01742 *
70 REM *******************************
80 TEXT : HOME : POKE 49168,0: PRINT CHR$(17)
90 HTAB 4: PRINT "RAINBOW BY WHITNEY HARRIS": HTAB 2: PRINT "COPYRIGHT(C) 1990 MINDCRAFT PUBL. CORP.": VTAB 6
100 PRINT "TYPE 1 THEN (RETURN) FOR FIRST PLOT. "
110 PRINT "TYPE 2 THEN (RETURN) FOR SECOND PLOT. ": PRINT
120 PRINT "TYPE ESCAPE TO QUIT. ": PRINT
130 VTAB 22: HTAB 10: PRINT "ENTER NUMBER";
140 GET Q$:Q = VAL(Q$)
150 IF Q = 1 THEN 210
160 IF Q = 2 THEN 990
170 IF Q$ = CHR$(27) THEN HOME : END
180 GOTO 1140
190 REM *******************************
200 REM PLOT #1, "WHITE LIGHT"
210 GOSUB 270
220 GOTO 440
230 REM *******************************
240 REM SUBROUTINE TO PLOT A CIRCLE
250 REM IN POLAR COORDINATES. N IS
260 REM NUMBER OF POINTS. R IS RADIUS.
270 HOME : HGR2 : HCOLOR= 3
280 LET PI = 3.14159:F = 1.15
290 LET X0 = 190:Y0 = 70
300 LET N = 500:R = 70
310 LET S = 2 *PI/N
320 REM LOOP TO INCREASE ANGLE,
330 REM THEN CHANGE TO CARTESIAN
340 REM COORDINATES AND PLOT.
350 FOR A = 0 TO 2 *PI STEP S
360 IF PEEK(49152) = 155 THEN 80
370 LET X = R * COS(A):Y = R * SIN(A)
380 HPLOT X0 +F *X,Y0 -Y
390 NEXT A
400 RETURN
410 REM *******************************
420 REM SNELL'S LAW
430 REM SIN(I)/SIN(R) = REFRACTION INDEX = U
440 LET U = 1.333
450 REM *******************************
460 REM LOOP BASED ON POINTS OF INCIDENCE
470 FOR SY = Y0 -5 TO 1 STEP -4
480 IF PEEK(49152) = 155 THEN 80
490 GOSUB 570
500 GOSUB 660
510 NEXT SY
520 HPLOT 154,186 TO 260,186
530 GET Q$: IF Q$ = CHR$(27) THEN 80
540 GOTO 530
550 REM *******************************
560 REM SUBROUTINE TO PLOT INCOMING RAY
570 HCOLOR= 3
580 LET YA = Y0 -SY
590 LET XA = - SQR(R ^2 -YA ^2)
600 LET SX = X0 +F *XA
610 REM PLOT INCOMING RAY
620 HPLOT 0,SY TO SX,SY
630 RETURN
640 REM *******************************
650 REM SUBROUTINE TO TRACE RAY THROUGH RAINDROP.
660 LET SI = YA/R:SR = SI/U
670 DEF FN ASN(X) = ATN(X/ SQR( -X *X +1))
680 LET IANGLE = FN ASN(SI)
690 LET RANGLE = FN ASN(SR)
700 LET BANGLE = 2 *RANGLE -IANGLE
710 LET XB = R * COS(BANGLE)
720 LET YB = R * SIN(BANGLE)
730 REM PLOT SEGMENT FROM POINT OF
740 REM INCIDENCE TO POINT OF REFLECTION
750 HPLOT X0 +F *XA,Y0 -YA TO X0 +F *XB,Y0 -YB
760 REM FIND POINT OF EMERGENCE
770 LET CANGLE = 4 *RANGLE -IANGLE -PI
780 LET XC = R * COS(CANGLE)
790 LET YC = R * SIN(CANGLE)
800 REM PLOT SEGMENT FROM POINT OF REFLECTION
810 REM TO POINT OF EMERGENCE.
820 HPLOT X0 +F *XB,Y0 -YB TO X0 +F *XC,Y0 -YC
830 REM SLOPE OF OUTGOING RAY.
840 LET M = TAN(CANGLE -IANGLE)
850 REM LOOP TO CALCULATE EQUATION
860 REM OF RAY, THEN PLOT IT.
870 LET X = XC
880 LET Y = M *(X -XC) +YC
890 REM CONDITION TO TERMINATE RAY.
900 IF X ^2 +Y ^2 >120 ^2 THEN 950
910 HPLOT X0 +F *X,Y0 -Y
920 IF PEEK(49152) = 155 THEN 80
930 LET X = X -1
940 GOTO 880
950 RETURN
960 REM *******************************
970 REM PLOT #2, REFRACTION OF COLORS
980 REM *******************************
990 GOSUB 270
1000 LET SY = 5
1010 GOSUB 570
1020 RESTORE
1030 FOR N = 1 TO 4
1040 IF PEEK(49152) = 155 THEN 80
1050 READ H,INDEX
1060 HCOLOR= H:U = INDEX
1070 GOSUB 660
1080 NEXT N
1090 GET Q$: IF Q$ = CHR$(27) THEN 80
1100 GOTO 1090
1110 REM *******COLOR CODES*******
1120 REM ORANGE=5,GREEN=1,BLUE=6,VIOLET=2
1130 DATA 5,1.29,1,1.31,6,1.33,2,1.35
1140 END